//
// Created by baka on 2025/10/20.
//

#ifndef STM32F407IGT6_PROTOCOL_H
#define STM32F407IGT6_PROTOCOL_H


#include "stdint.h"

void uart_task_init(void);
void uartTaskTEST(void const * argument);
void uartTask(void const * argument);
void dataTaskTEST(void const * argument);
void processingData(const uint8_t *data,uint8_t len);



#define bufSize 16
#define UART_HEAD 0xAA
#define UART_TAIL 0x55




#define FAN_DEVICE_ID 0x01
#define TEM_HUM_DEVICE_ID 0x02
#define WRITE_CMD 0x06
#define READ_CMD 0x03





typedef struct
{
    uint8_t head;;
    uint8_t tail;
    uint8_t length;
    uint8_t data[bufSize];
    uint8_t dataIndex;
    uint8_t crc;
    uint32_t last_receive_tick;
    uint32_t timeout_threshold_ms;
    enum
    {
        wait_head,
        wait_length,
        wait_data,
        wait_crc,
        wait_tail,
    }State_t;
    void(*callback)(void*);
}RecvData_t;



typedef struct
{
    uint16_t TEM;
    uint16_t HUM;
    enum
    {
        fan_off,
        fan_on,
    }Fan_state;
}Sensor_t;



void fan_control(uint8_t fanState);
void get_hum_tem(void);




#endif //STM32F407IGT6_PROTOCOL_H

/*数据格式  包头   数据长度   数据域   校验位（CRC-8） 包尾
 *包头  0xAA
 *包尾  0X55
 *校验位（CRC-8）
 *
 *数据长度不定
 *
 *
 *
 *数据域格式    设备ID     数据
 *设备ID   风扇   温湿度传感器
 *
 *
 *
 *
 *风扇 0x01  开启
 *风扇 0x00 关闭
 *
 *温湿度  2位数据
 *
 *
    */